#ifndef H_RCGD_EXTERN_H
#define H_RCGD_EXTERN_H

/*=================================================================*/
/*	CONTROL.C                                                      */
/*=================================================================*/
extern CONTROL_    CONTROL;

extern Matrics R;
extern Matrics GainK, HatX, HatXm0, Pm0, P0, PhiK, QK, HK, IK, U;
extern double RK;
extern float KGainF;
extern int KInterval,KNextInterval;
extern float Kp,Ki,T;
extern double GPSPrevU,GPSCurrentU;

extern int DACTableIndex;

extern double MeanDAC,MeanU;
extern int Tracking_Interval_Counter;
extern int TraceControlCounter;
extern double 	Trace_AvgTimeOffset;

extern float 	Modified_RAW_OFFSET;

extern int FIRST_LOCK,FIRST_STANDBY;
extern float TRACE_KP, TRACE_KI, TRACE_T;

extern char	HOLDOVER_RECOVERY_CONTROL;
extern char PPS_ALARM_RECOVERY_CONTROL;

extern int	SkipAgingTableCounter;

extern void InitializeKalmanControl();
extern void InitializeKalmanControl_();
extern void InitializeTraceControl();


extern void Init_CONTROL();
extern void Config_Control();
extern void Init_KalmanVariable();
extern void Control();
extern void MainControl();
extern void OvenOCXO();
extern void BinarySearch();
extern void LinearSearch();
extern void InitializePLL();
extern void WaitToControl();
extern void HoldoverControl();
extern void Operation();
extern void KOperation();

extern void Init_PLL(void);




/*=================================================================*/
/*	OCXO.C                                                         */
/*=================================================================*/
extern ID_Table_	IDTable;
extern OCXO_ID_		OCXO_ID;
extern fTempTable_	fIDTable[MAX_ID_TABLE_SIZE];
extern void GetTempDAC();



/*=================================================================*/
/*	MATRIX.C                                                       */
/*=================================================================*/
/* Kalman Filtering; '� ��.. */
extern void init_matrics(Matrics *, int, int, int);
extern Matrics multiply(Matrics ,Matrics);
extern Matrics multiplyN(Matrics ,double);
extern Matrics Madd(Matrics ,Matrics);
extern Matrics transpose(Matrics);
extern double   MatToFloat(Matrics);

#endif
